//class Solution {
//public:
//    int maxProduct(vector<int>& nums) {
//        int size = nums.size();
//        int ret = INT_MIN;
//        vector<int> dp_max(size + 1);
//        vector<int> dp_min(size + 1);
//        dp_max[0] = dp_min[0] = 1;
//        for (int i = 1; i <= size; i++) {
//            if (nums[i - 1] > 0) {
//                dp_max[i] = max(nums[i - 1], nums[i - 1] * dp_max[i - 1]);
//                dp_min[i] = min(nums[i - 1], nums[i - 1] * dp_min[i - 1]);
//            }if (nums[i - 1] < 0) {
//                dp_max[i] = max(nums[i - 1], nums[i - 1] * dp_min[i - 1]);
//                dp_min[i] = min(nums[i - 1], nums[i - 1] * dp_max[i - 1]);
//            }
//            ret = max(dp_max[i], ret);
//        }
//        return ret;
//    }
//};